The present invention relates to video streaming parameter optimization and its use in meeting quality of service requirements.
Video streaming is widely carried, out over networks and can be carried out using widely varying parameters, such as frame rate, resolution, delay, compression and the like. It is further known to vary the streaming parameters dynamically depending on network conditions. This is known as load balancing. It is for example possible to compress a video stream to various levels, or to provide different resolutions or frame rates. Conditions on the network are then dynamically followed and one of the streams is selected in accordance with the current load conditions on the network. Numerous systems of load balancing are available.
Furthermore it is known to offer, a user a choice of streams to select depending on the bandwidth of his connection. For example a stream is offered for users having a broadband connection and another stream is offered for users having a dialup connection which is of much lower capacity. The user simply clicks for his choice depending on his connection bandwidth. Subsequently, dynamic load balancing may modify the initially chosen stream depending on the dynamic conditions of the network.
In general it is the aim of all load balancing systems to provide each user with the best overall level or quality of service (QoS) that the connection will provide. Furthermore the known load balancing systems generally take into account capacity issues of the connection.
However, load balancing simply deals with network issues such as connection capacity and is only interested in providing continued service to its customers whatever the connection conditions. Load balancing does not take into account issues at the sending or receiving end or requirements for particular kinds of services. Thus, in some cases the user does not want the best overall service, but rather is interested in the enhancement of specific parameters. For example, if the stream is a live stream from a remote control camera that the user is operating, then it is very important that the delay is minimized so that he receives immediate feedback on his control operations, and this overrides any requirements for the resolution or frame rate. If on the other hand the stream is from a storage unit, and is not live and feedback issues do not apply, then delay is a less relevant parameter than those of frame rate and resolution. Again if the stream is one of multiple streams from various security cameras which are being displayed simultaneously at the monitor of a security guard, then resolution and frame rate are probably not that important since the computer of the security guard probably does not have the processing power for simultaneous processing of multiple high resolution or high frame rate streams. The security guard would probably be satisfied with several low resolution streams and the ability to move to a higher resolution on one of the streams as and when a situation of interest arises. The known load balancing systems do not address these issues.
More specifically, with the use of video, the following limitations affect the quality of the video signal as it is transferred over a network, utilized or stored, namely:
The network overall bandwidth Network load.
Network bandwidth load
CPU power at the receiver side to enable the receiver side to decode video information.
CPU limitations at the sender side, the sender being required to send multiple streams from the same machine.
Overall storage needs.
The general requirement to get the best video quality available for a specific client in a particular time based on the client preferences.
Load balancing tends to deal only with the first of the above issues, being completely blind to issues at the sending end, at the receiving end, storage issues and the best video quality as per the requirements of an individual user.